"""
复选框控件QCheckBox
3种状态
未选中：0
半选中：1
选中：2
"""

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt


class QCheckBoxDemo(QWidget):
    def __init__(self):
        super(QCheckBoxDemo, self).__init__()
        self.iniUI()

    def iniUI(self):
        self.setWindowTitle("复选框控件演示")

        layout = QVBoxLayout()

        self.checkBox1 = QCheckBox('复选框控件1')
        self.checkBox1.setChecked(True)
        self.checkBox1.stateChanged.connect(lambda: self.checkBoxState(self.checkBox1))
        layout.addWidget(self.checkBox1)

        self.checkBox2 = QCheckBox('复选框控件2')
        self.checkBox2.stateChanged.connect(lambda: self.checkBoxState(self.checkBox2))
        layout.addWidget(self.checkBox2)

        self.checkBox3 = QCheckBox('半选中')
        self.checkBox3.stateChanged.connect(lambda: self.checkBoxState(self.checkBox3))
        self.checkBox3.setTristate(True)
        self.checkBox3.setCheckState(Qt.PartiallyChecked)
        layout.addWidget(self.checkBox3)
        self.setLayout(layout)
        self.resize(260, 300)

    def checkBoxState(self, cb):
        check1Status = self.checkBox1.text() + f',isChecked {self.checkBox1.isChecked()}, checkState={self.checkBox1.checkState()}' + '\n'

        check2Status = self.checkBox2.text() + f',isChecked {self.checkBox2.isChecked()},checkState={self.checkBox2.checkState()}' + '\n'

        check3Status = self.checkBox3.text() + f',isChecked {self.checkBox3.isChecked()},checkState={self.checkBox3.checkState()}' + '\n'

        print(check1Status + check2Status + check3Status)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QCheckBoxDemo()
    main.show()
    sys.exit(app.exec_())
